package com.goldgov.branchCircle.service;

import java.util.List;

import com.goldgov.meetingstatistics.bean.MeetingOrg;
import com.goldgov.meetingstatistics.bean.MeetingOrgQuery;

public interface BranchCircleService {

	/**
	 * 获取主键
	 * @return
	 */
	BranchCircle getBranchID();
	
	/**
	 * 获取支部圈列表
	 * @param query
	 * @return
	 */
	List<BranchCircle> getBranchCircleList(BranchCircleQuery query);
	
	/**
	 * 根据组织id获取支部圈列表
	 * @param query
	 * @return
	 */
	List<BranchCircle> getBranchCircleListByOrgId(BranchCircleQuery query);
	
	/**
	 * 根据主键查询支部圈
	 * @param id
	 * @return
	 */
	BranchCircle getBranchCircle(String id);
	
	/**
	 * 添加支部圈
	 * @param BranchCircle
	 */
	Boolean addBranchCircle(BranchCircle branchCircle);
	
	/**
	 * 删除支部圈
	 * @param BranchCircle
	 */
	void deleteBranchCircle(String branchID);
	
	/**
	 * 管理员获取支部圈列表
	 * @param query
	 * @return
	 */
	List<BranchCircle> getBranchCircleListByAdmin(BranchCircleQuery query);
	
	/**
	 * 获取职务
	 * @param 支部id
	 */
	String getDutyByID(String orgID);
	
	/**
	 * 统计某一支部下个人的文章发表总数
	 * @param orgID
	 * @return
	 */
	List<BranchCircle> countBranchCircleByID(BranchCircleQuery query);
	/**
	 * 按小时统计某一支部下个人的文章发表总数
	 * @param query
	 * @return
	 */
	List<BranchCircle> countBranchCircleByHour(BranchCircleQuery query);
	/**
	 * 按年季月查询支部每个人文章发布数
	 * @param query
	 * @return
	 */
	List<BranchCircle> findBranchCircleByPerson(BranchCircleQuery query) throws Exception;
	/**
	 * 查询支部每个人一个月中每周文章发布数
	 * @param query
	 * @return
	 */
	List<BranchCircle> findBranchCircleByPersonWeek(BranchCircleQuery query);
	/**
	 * 支部圈发布平均数
	 * @param query
	 * @return
	 */
	List<BranchCircle> findBranchCircleByOrgAvg(BranchCircleQuery query);
	
	/**
	 * 根据人获取机构基本信息
	 * @param userId
	 * @return
	 */
	BranchCircle findOrgByUserId(String userId);
	/**
	 * 查询本支部本周每个人文章发布数
	 * @param query
	 * @return
	 */
	List<BranchCircle> findMyBranchCirclWeek(BranchCircleQuery query)throws Exception;

	List<OrganizationEntity> findChildOrganization(String id);
	
	/**
	 * 获取组织下特定时间段支部圈发布数
	 * @param query
	 * @return
	 */
	List<BranchCircle> countOrgBranchByTime ( BranchCircleQuery query);
	
	Boolean updateBranchCircleById(BranchCircle branchCircle);
	
	/**
	 * 根据主键查询支部圈
	 * @param id
	 * @return
	 */
	BranchCircle getBranchCircleById(String id);
	/**
	 * 统计支部圈活跃度
	 * @date 2018年11月27日 下午2:47:40 
	 * @author hanxiangyu
	 * @param query
	 * @return
	 */
	List<BranchCircle> findLivenessStatistics(BranchCircleQuery query);
	/**
	 * 党员支部圈发布量排行
	 * @param query
	 * @return
	 */
	List<BranchCircle> getBranchCircleOrgRank(BranchCircleQuery query);
	/**
	 * 下级机构下所有的支部圈数
	 * @param query
	 * @return
	 */
	List<BranchCircle> countChildOrgBranch(BranchCircleQuery query);
	/**
	 * 获取列表
	 * @date 2018年12月14日 下午3:21:21 
	 * @author hanxiangyu
	 * @param query
	 * @return
	 */
	List<MeetingOrg> findOrgBranchCSList(MeetingOrgQuery query);
	
}
